As is well known, computer programs have become easier to use as a consequence of the development of graphical user interfaces. The proliferation in the number of applications programs with graphical user interfaces is partly the result of the advent of windowed user environments (e.g., Microsoft Windows). Unfortunately, the creation of a graphical user interface generally requires the utilization of user interface "toolkits" by highly-skilled programmers. While user interface toolkits enable a programmer to specify the manner in which a particular data structure is displayed, such toolkits do not address the task of designing the entire interface. Instead, design of the overall interface generally requires an application programmer to:
(1) become knowledgeable about the toolkit and its virtual devices, PA1 (2) select appropriate virtual devices based on the input and output requirements of the application, PA1 (3) customize the devices for the particular application, PA1 (4) lay out the selected devices on the interface display, and PA1 (5) write code which initiates the interface and integrate it with the application. PA1 (1) interactive selection and placement of the graphical objects (defined by blocks of code known as "widgets") comprising the interface, and PA1 (2) assignment of values to various attributes, e.g., size, color and font type, of each graphical object.
Although this creates an interface for an existing application, changing the application typically requires corresponding changes to be made to the interface. It follows that parallel development of an application and its interface requires repeated and costly revisions. Hence, increased interest has developed in the development of tools to automate the design of graphical user interfaces.
In the field of database applications there exist several types of tools used to facilitate the design of user interfaces. Among these are included stand-alone form managers, fourth generation languages, graphical user interface builders, automatic graphical user interface generation systems, and automatic layout designers.